import { NextRequest, NextResponse } from 'next/server';
import { db } from '@/lib/db';

// 提示词模板配置
const promptTemplates = {
  // 提示词生成配置
  prompt_generation_system: '你是提示词优化专家，基于用户提供的软件描述、语言、版本，生成三个用于阶段一和阶段二调用的高质量 prompt 模板（system + user）：分别针对"登记申请表摘要"、"源程序摘要"、"说明文档摘要"。请确保返回的是有效的JSON格式，包含form_prompt、code_prompt和doc_prompt字段。',
  
  // 登记申请表提示词配置
  form_summary_system: '你是软件著作权登记申请表材料撰写专家。请根据用户提供的软件基本信息，生成一份符合中国版权保护中心要求的登记申请表摘要。摘要需要包含软件名称、简称、版本号、开发完成日期、发表状态、权利取得方式、权利范围、软件用途和技术特点等关键信息。要求语言简洁、信息准确、格式规范。',
  form_summary_user: '请根据以下软件信息生成登记申请表摘要：软件名称：{software_name}，简称：{short_name}，版本号：{version}，开发完成日期：{completion_date}，发表状态：{publication_status}，权利取得方式：{rights_acquisition}，权利范围：{rights_scope}，软件用途：{purpose}，技术特点：{features}，运行环境：{environment}。',
  form_full_system: '你是软件著作权材料生成专家。请根据下面的摘要，生成完整版本内容，补全格式（页眉页脚、页码）、规范页数、行数、不少于每页要求，并符合登记提交要求。',
  form_full_user: '请根据以下摘要生成完整的登记申请表：{summary}',
  
  // 源程序提示词配置
  code_summary_system: '你是软件源代码材料撰写专家。请根据用户提供的源代码信息，生成一份符合中国版权保护中心要求的源程序摘要。摘要需要包含软件功能模块、主要算法、数据结构、接口设计、技术架构、开发工具、编程语言、代码规模、主要函数和类等关键信息。要求技术描述准确、逻辑清晰、重点突出。',
  code_summary_user: '请根据以下源代码信息生成源程序摘要：软件名称：{software_name}，编程语言：{language}，代码规模：{code_size}，主要功能：{main_functions}，技术架构：{architecture}，开发工具：{development_tools}，主要算法：{algorithms}，数据结构：{data_structures}，接口设计：{interface_design}。',
  code_full_system: '你是软件著作权材料生成专家。请根据下面的摘要，生成完整版本内容，补全格式（页眉页脚、页码）、规范页数、行数、不少于每页要求，并符合登记提交要求。',
  code_full_user: '请根据以下摘要生成完整的源程序材料：{summary}',
  
  // 说明文档提示词配置
  document_summary_system: '你是软件说明文档材料撰写专家。请根据用户提供的文档信息，生成一份符合中国版权保护中心要求的设计说明书或操作手册摘要。摘要需要包含软件设计理念、功能模块说明、操作流程、界面描述、系统配置、安装部署、使用说明、技术支持等关键信息。要求结构清晰、内容完整、用户友好。',
  document_summary_user: '请根据以下文档信息生成说明文档摘要：文档类型：{doc_type}，软件名称：{software_name}，设计理念：{design_concept}，功能模块：{function_modules}，操作流程：{operation_flow}，界面描述：{interface_description}，系统配置：{system_config}，安装部署：{installation}，使用说明：{usage_instructions}，技术支持：{technical_support}。',
  document_full_system: '你是软件著作权材料生成专家。请根据下面的摘要，生成完整版本内容，补全格式（页眉页脚、页码）、规范页数、行数、不少于每页要求，并符合登记提交要求。',
  document_full_user: '请根据以下摘要生成完整的说明文档材料：{summary}'
};

export async function POST(request: NextRequest) {
  try {
    // 检查是否已经初始化过
    const existingConfig = await db.adminConfig.findUnique({
      where: { config_key: 'prompt_templates' }
    });

    if (existingConfig) {
      return NextResponse.json({
        success: false,
        message: '提示词配置已经存在，如需重新初始化请先删除现有配置'
      });
    }

    // 保存提示词模板到数据库
    await db.adminConfig.create({
      data: {
        config_key: 'prompt_templates',
        config_value: JSON.stringify(promptTemplates)
      }
    });

    return NextResponse.json({
      success: true,
      message: `提示词配置初始化成功！已预填 ${Object.keys(promptTemplates).length} 个提示词模板`,
      templates: Object.keys(promptTemplates)
    });

  } catch (error) {
    console.error('初始化提示词配置失败:', error);
    return NextResponse.json({
      success: false,
      error: '初始化失败: ' + (error as Error).message
    });
  }
}

export async function GET() {
  try {
    // 检查当前配置
    const config = await db.adminConfig.findUnique({
      where: { config_key: 'prompt_templates' }
    });

    if (!config) {
      return NextResponse.json({
        success: false,
        message: '提示词配置尚未初始化',
        initialized: false
      });
    }

    const templates = JSON.parse(config.config_value as string);

    return NextResponse.json({
      success: true,
      message: '提示词配置已初始化',
      initialized: true,
      templateCount: Object.keys(templates).length,
      templates: Object.keys(templates)
    });

  } catch (error) {
    console.error('获取提示词配置失败:', error);
    return NextResponse.json({
      success: false,
      error: '获取配置失败: ' + (error as Error).message
    });
  }
}